Appendix overview

In this appendix, I report additional exploratory factor analysis (EFA) results that were excluded from the main text of Chapter III, including: (a) unrotated versions of all of the EFA solutions reported in Chapter III; (b) oblimin-transformed (rather than varimax-rotated) versions of all of the EFA solutions reported in Chapter III; and (c) additional varimax-rotated EFA solutions not reported in full in Chapter III because I deemd to be redundant with the reported solutions.

Unrotated solutions

Throughout this dissertation, beginning in Chapter III, I have reported EFA solutions after applying varimax rotation. This rotation, which maximizes the sum of the variances of the squared factor loadings, is intended to make factors more interpretable by producing “simple structure” (Thurstone, 1949). Here, for completeness, I present unrotated EFA solutions for all of the EFAs reported in Chapter III.

Study 1

Study 2

Study 3

Study 4

Oblimin-transformed solutions

Throughout this dissertation, I have opted to focus on varimax-rotated EFA solutions, in which factors are constrained to be orthogonal (i.e., inter-factor correlations are 0). In my (admittedly anecdotal) experience, this rotation has tended to produce solutions that are more replicable when studies are repeated exactly, more similar across variants of the empirical approach, and easier to make factor retention decisions about. Orthogonal solutions also lend themselves more naturally to “scoring” individual participants on each of the underlying constructs because factors are, by definition, maximally distinct from one another. Since comparing EFA solutions across studies and age groups (Chapter III) and using these solutions to “score” participants on their assessments of the mental lives of different target characters (Chapter V) are two of the main goals of this dissertation, varimax rotations seemed to me to be appropriate for my current purposes.

However, “oblique” transformations, such as the “oblimin” transformation, also confer many advantages in using EFA to identify constructs of theoretical interest (for discussion, see Revelle, 2018, Chapter 6). In contrast to orthogonal rotations, oblique transformations allow factors to correlate with each other. In removing the orthgonality constraint, oblique transformations thus reveal relationships between variables (in my case, mental capacities) and factors (conceptual units) that might be considered more “natural”; they might also reveal new aspects of the relationships among factors themselves (pertinent to my goals in Chapter V).

In the interest of adding nuance to my primary discussions of the conceptual units identified by EFA (Chatper III) and the relationships among these units (Chapter V), here I present oblimin-transformed EFA solutions for all studies.

Study 1

EFA solutions

Different factor retention protocols suggested retaining between 3-5 factors for Studies 1a-1d. Here, I report 3-, 4-, and 5-factor solutions for all of these studies. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Studies 1a-1d.

Study 2

EFA solutions

Different factor retention protocols suggested retaining either 3 or 4 factors for adults in Study 2; all protocols suggested retaining 3 factors for children (ages 7-9y). Here, I report 3-, and 4-factor solutions for adults and the 3-factor solution for children. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Study 2.

Study 3

EFA solutions

Various factor retention protocols suggested retaining either 3 or 4 factors for adults in Study 3; 3 factors for older children (ages 7-9y); and either 1, 3, or 4 factors for younger children (ages 4-6y). Here, I report 3-, and 4-factor solutions for adults, the 3-factor solution for older children, and the 1-, 3-, and 4-factor solutions for younger children. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Study 3 (with the exception of the 1-factor null solution for younger children).

Study 4

EFA solutions

All factor retention protocols suggested retaining 3 factors for adults in Study 4; different protocols suggested retaining either either 1, 3, or 4 factors for children (ages 4-5y). Here, I report the 3-factor solution for adults, and the 1-, 3-, and 4-factor solutions for children. When these factors seem similar to the BODY, HEART, and MIND factors presented in Chapter III, I have labeled them accordingly.

Inter-factor correlations

Here I present inter-factor correlations for all of the above EFA solutions for Study 4 (with the exception of the 1-factor null solution for children).

Varimax-rotated solutions previously deemed redundant

In Chapter III, I focused my interpretation on a subset of the EFA solutions suggested by the three factor retention protocols, excluding those solutions in which additional factors were redundant with the 3-factor (BODY-HEART-MIND) solution. These additional factors tend to explain very little of the shared variance; tend not to be the dominant factor (the factor with the strongest absolute factor loading) for many, if any, mental capacities; and tend to have very weak factor loadings. I include them here for completeness.

Study 1

The factor retention criteria employed in Weisman et al. (2017) suggested retaining 3 factors for all of the studies included in Study 1; see Chapter III. In contrast, parallel analysis suggested retaining 4 factors (instead of 3) for Studies 1b and 1d; minimizing BIC suggested retaining 4 factors (instead of 3) for Study 1c, and 5 factors (instead of 3) for Studies 1a, 1b, and 1d. See Figure A.13.

Study 2

All of the EFA solutions suggested by the three factor retention protocols are reported in full in Chapter III.

Study 3

The factor retention criteria employed in Weisman et al. (2017) suggested retaining 3 factors for all of the age groups included in Study 3; see Chapter III. In contrast, parallel analysis suggested retaining 2 factors (instead of 3) for younger children; and minimizing BIC suggested retaining 4 factors (instead of 3) for adults, and 1 factor (i.e., a “null” solution) for younger children (ages 4-6y). See Figure A.14.

Study 4

All of the EFA solutions suggested by the three factor retention protocols are reported in full in Chapter III, with the exception of the 1-factor (“null”) solution suggested by minimizing BIC for younger children (4-5y). See Figure A.15.

TO DO LIST

  • reconsider additions to appendix A:
    • left-right position (study 1c)
    • first-second (study 4)
    • beetle-robot (studies 1a-1c, study 2, study 4)
    • analysis of scale use across age groups
LS0tCnRpdGxlOiAiQXBwZW5kaXggQTogQWRkaXRpb25hbCBFRkEgc29sdXRpb25zIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogeWVzCmFsd2F5c19hbGxvd19odG1sOiB5ZXMKLS0tCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMC42NywKICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgPSBGLCBlY2hvID0gRikKYGBgCgpgYGB7cn0KIyAjIGZvciBrbml0dGluZyB0byAuZG9jeAojIG91dHB1dDoKIyAgIHdvcmRfZG9jdW1lbnQ6CiMgICAgIHJlZmVyZW5jZV9kb2N4OiAiLi93b3JkLXN0eWxlcy1yZWZlcmVuY2UuZG9jeCIKIyBhbHdheXNfYWxsb3dfaHRtbDogeWVzCiAgIAojICMgZm9yIGtuaXR0aW5nIHRvIC5uYi5odG1sIAojIG91dHB1dDoKIyAgIGh0bWxfbm90ZWJvb2s6CiMgICAgIHRvYzogeWVzCiMgICAgIHRvY19kZXB0aDogNAojICAgICB0b2NfZmxvYXQ6IHllcwpgYGAKCmBgYHtyfQpzZXQuc2VlZCgxMjM0NSkKCiMgcGFja2FnZXMKc291cmNlKCIuL3NjcmlwdHMvbGlicmFyaWVzLlIiKQoKIyBzdXBwb3J0aW5nIGZ1bmN0aW9ucwpzb3VyY2UoIi4vc2NyaXB0cy9lZmFfcGFyYW0uUiIpCnNvdXJjZSgiLi9zY3JpcHRzL21heF9mYWN0b3JzX2VmYS5SIikKc291cmNlKCIuL3NjcmlwdHMvcmV0ZW5fZnVuLlIiKQpzb3VyY2UoIi4vc2NyaXB0cy9wbG90X2Z1bi5SIikKc291cmNlKCIuL3NjcmlwdHMvZWZhX2Z1bi5SIikKc291cmNlKCIuL3NjcmlwdHMvbXNfZnVuLlIiKQoKIyBkYXRhIHNjcmlwdHMKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zMS5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zMl9hZC5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zMl83OS5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zM19hZC5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zM183OS5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zM180Ni5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zNF9hZC5SIikKc291cmNlKCIuL3NjcmlwdHMvZGF0YV9zNF80Ni5SIikKYGBgCgpgYGB7cn0KIyBsb2FkIGluIEVGQXMgZnJvbSBDaGFwdGVyIElJCiMgc3R1ZHkgMQplZmFfcGFyX2QxYV9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDFhX2FkIikKZWZhX2JpY19kMWFfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QxYV9hZCIpCmVmYV93ZG1fZDFhX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kMWFfYWQiKQoKZWZhX3Bhcl9kMWJfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QxYl9hZCIpCmVmYV9iaWNfZDFiX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kMWJfYWQiKQplZmFfd2RtX2QxYl9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDFiX2FkIikKCmVmYV9wYXJfZDFjX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kMWNfYWQiKQplZmFfYmljX2QxY19hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDFjX2FkIikKZWZhX3dkbV9kMWNfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QxY19hZCIpCgplZmFfcGFyX2QxZF9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDFkX2FkIikKZWZhX2JpY19kMWRfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QxZF9hZCIpCmVmYV93ZG1fZDFkX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kMWRfYWQiKQoKIyBzdHVkeSAyCmVmYV9wYXJfZDJfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QyX2FkIikKZWZhX2JpY19kMl9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDJfYWQiKQplZmFfd2RtX2QyX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kMl9hZCIpCgplZmFfcGFyX2QyXzc5IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kMl83OSIpCmVmYV9iaWNfZDJfNzkgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QyXzc5IikKZWZhX3dkbV9kMl83OSA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDJfNzkiKQoKIyBzdHVkeSAzCmVmYV9wYXJfZDNfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfcGFyX2QzX2FkIikKZWZhX2JpY19kM19hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9iaWNfZDNfYWQiKQplZmFfd2RtX2QzX2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3dkbV9kM19hZCIpCgplZmFfcGFyX2QzXzc5IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kM183OSIpCmVmYV9iaWNfZDNfNzkgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2QzXzc5IikKZWZhX3dkbV9kM183OSA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDNfNzkiKQoKZWZhX3Bhcl9kM180NiA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDNfNDYiKQplZmFfYmljX2QzXzQ2IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kM180NiIpCmVmYV93ZG1fZDNfNDYgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2QzXzQ2IikKCiMgc3R1ZHkgNAplZmFfcGFyX2Q0X2FkIDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX3Bhcl9kNF9hZCIpCmVmYV9iaWNfZDRfYWQgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfYmljX2Q0X2FkIikKZWZhX3dkbV9kNF9hZCA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV93ZG1fZDRfYWQiKQoKZWZhX3Bhcl9kNF80NiA8LSByZWFkUkRTKGZpbGUgPSAiLi9lZmFzL2VmYV9wYXJfZDRfNDYiKQplZmFfYmljX2Q0XzQ2IDwtIHJlYWRSRFMoZmlsZSA9ICIuL2VmYXMvZWZhX2JpY19kNF80NiIpCmVmYV93ZG1fZDRfNDYgPC0gcmVhZFJEUyhmaWxlID0gIi4vZWZhcy9lZmFfd2RtX2Q0XzQ2IikKYGBgCgojIEFwcGVuZGl4IG92ZXJ2aWV3CgpJbiB0aGlzIGFwcGVuZGl4LCBJIHJlcG9ydCBhZGRpdGlvbmFsIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcyAoRUZBKSByZXN1bHRzIHRoYXQgd2VyZSBleGNsdWRlZCBmcm9tIHRoZSBtYWluIHRleHQgb2YgQ2hhcHRlciBJSUksIGluY2x1ZGluZzogKGEpIHVucm90YXRlZCB2ZXJzaW9ucyBvZiBhbGwgb2YgdGhlIEVGQSBzb2x1dGlvbnMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUk7IChiKSBvYmxpbWluLXRyYW5zZm9ybWVkIChyYXRoZXIgdGhhbiB2YXJpbWF4LXJvdGF0ZWQpIHZlcnNpb25zIG9mIGFsbCBvZiB0aGUgRUZBIHNvbHV0aW9ucyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSTsgYW5kIChjKSBhZGRpdGlvbmFsIHZhcmltYXgtcm90YXRlZCBFRkEgc29sdXRpb25zIG5vdCByZXBvcnRlZCBpbiBmdWxsIGluIENoYXB0ZXIgSUlJIGJlY2F1c2UgSSBkZWVtZCB0byBiZSByZWR1bmRhbnQgd2l0aCB0aGUgcmVwb3J0ZWQgc29sdXRpb25zLgoKCiMgVW5yb3RhdGVkIHNvbHV0aW9ucwoKVGhyb3VnaG91dCB0aGlzIGRpc3NlcnRhdGlvbiwgYmVnaW5uaW5nIGluIENoYXB0ZXIgSUlJLCBJIGhhdmUgcmVwb3J0ZWQgRUZBIHNvbHV0aW9ucyBhZnRlciBhcHBseWluZyB2YXJpbWF4IHJvdGF0aW9uLiBUaGlzIHJvdGF0aW9uLCB3aGljaCBtYXhpbWl6ZXMgdGhlIHN1bSBvZiB0aGUgdmFyaWFuY2VzIG9mIHRoZSBzcXVhcmVkIGZhY3RvciBsb2FkaW5ncywgaXMgaW50ZW5kZWQgdG8gbWFrZSBmYWN0b3JzIG1vcmUgaW50ZXJwcmV0YWJsZSBieSBwcm9kdWNpbmcgInNpbXBsZSBzdHJ1Y3R1cmUiIChUaHVyc3RvbmUsIDE5NDkpLiBIZXJlLCBmb3IgY29tcGxldGVuZXNzLCBJIHByZXNlbnQgdW5yb3RhdGVkIEVGQSBzb2x1dGlvbnMgZm9yIGFsbCBvZiB0aGUgRUZBcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSS4KCmBgYHtyfQojIHJlc2V0IEVGQSBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQsIHRoZW4gc2V0IGNob3NlbiByb3RhdGlvbiB0byBub25lCnNvdXJjZSgiLi9zY3JpcHRzL2VmYV9wYXJhbS5SIikKY2hvc2VuX3JvdCA8LSAibm9uZSIKYGBgCgojIyBTdHVkeSAxCgpgYGB7cn0KZWZhXzNfZDFhX2FkX3Vucm90IDwtIGZhX2Z1bihkMWFfYWRfd2lkZV9pLCAzKQplZmFfM19kMWJfYWRfdW5yb3QgPC0gZmFfZnVuKGQxYl9hZF93aWRlX2ksIDMpCmVmYV8zX2QxY19hZF91bnJvdCA8LSBmYV9mdW4oZDFjX2FkX3dpZGVfaSwgMykKZWZhXzNfZDFkX2FkX3Vucm90IDwtIGZhX2Z1bihkMWRfYWRfd2lkZV9pLCAzKQpgYGAKCmBgYHtyfQojIHN0dWR5IDFhCnBsb3RfZWZhXzNfZDFhX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QxYV9hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxYgpwbG90X2VmYV8zX2QxYl9hZF91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kMWJfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWMKcGxvdF9lZmFfM19kMWNfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDFjX2FkX3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFkCnBsb3RfZWZhXzNfZDFkX2FkX3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QxZF9hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xIDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2QxYV9hZF91bnJvdCwgcGxvdF9lZmFfM19kMWJfYWRfdW5yb3QsIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDFjX2FkX3Vucm90LCBwbG90X2VmYV8zX2QxZF9hZF91bnJvdCwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA0LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxLjIpKQoKZmlndXJlQS4xX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMSwgc3RyX3dyYXAoIkZpZ3VyZSBBLjE6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxIChhcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSSksIGJlZm9yZSByb3RhdGlvbi4gQWxsIHJlc3VsdHMgYXJlIGZyb20gVVMgYWR1bHQgc2FtcGxlczsgc2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBTdHVkeSAxYS4gKEIpIFN0dWR5IDFiLiAoQykgU3R1ZHkgMWMuIChEKSBTdHVkeSAxZC4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjEsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMC42fQpnZ2RyYXcoZmlndXJlQS4xX2NhcCkKYGBgCgojIyBTdHVkeSAyCgpgYGB7cn0KZWZhXzNfZDJfYWRfdW5yb3QgPC0gZmFfZnVuKGQyX2FkX3dpZGVfaSwgMykKZWZhXzRfZDJfYWRfdW5yb3QgPC0gZmFfZnVuKGQyX2FkX3dpZGVfaSwgNCkKZWZhXzNfZDJfNzlfdW5yb3QgPC0gZmFfZnVuKGQyXzc5X3dpZGVfaSwgMykKYGBgCgpgYGB7cn0KIyBhZHVsdHMKcGxvdF9lZmFfM19kMl9hZF91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kMl9hZF91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiQWR1bHRzIiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDJfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzRfZDJfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIGNoaWxkcmVuCnBsb3RfZWZhXzNfZDJfNzlfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDJfNzlfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkNoaWRscmVuLCA3LTl5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuMiA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kMl9hZF91bnJvdCwgcGxvdF9lZmFfNF9kMl9hZF91bnJvdCwgCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kMl83OV91bnJvdCwgCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMS4yLCAxLjIpKQoKZmlndXJlQS4yX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMiwgc3RyX3dyYXAoIkZpZ3VyZSBBLjI6IEZhY3RvciBsb2FkaW5ncyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAyIChhcyByZXBvcnRlZCBpbiBDaGFwdGVyIElJSSksIGJlZm9yZSByb3RhdGlvbi4gKEEpIFJlc3VsdHMgZm9yIFVTIGFkdWx0cywgcmV0YWluaW5nIHRocmVlIGZhY3RvcnMuIChCKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMsIHJldGFpbmluZyBmb3VyIGZhY3RvcnMuIChDKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDIxMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4yLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuMl9jYXApCmBgYAoKIyMgU3R1ZHkgMwoKYGBge3J9CmVmYV8zX2QzX2FkX3Vucm90IDwtIGZhX2Z1bihkM19hZF93aWRlX2ksIDMpCmVmYV8zX2QzXzc5X3Vucm90IDwtIGZhX2Z1bihkM183OV93aWRlX2ksIDMpCmVmYV8yX2QzXzQ2X3Vucm90IDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDIpCmVmYV8zX2QzXzQ2X3Vucm90IDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDMpCmBgYAoKYGBge3J9CiMgYWR1bHRzCnBsb3RfZWZhXzNfZDNfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDNfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIG9sZGVyIGNoaWxkcmVuCnBsb3RfZWZhXzNfZDNfNzlfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDNfNzlfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIk9sZGVyIGNoaWxkcmVuLCA3LTl5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgeW91bmdlciBjaGlsZHJlbgpwbG90X2VmYV8zX2QzXzQ2X3Vucm90IDwtIGhlYXRtYXBfZnVuKGVmYV8zX2QzXzQ2X3Vucm90KSArCiAgbGFicyh0aXRsZSA9ICJZb3VuZ2VyIGNoaWxkcmVuLCA0LTZ5Iiwgc3VidGl0bGUgPSAiVW5yb3RhdGVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzJfZDNfNDZfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzJfZDNfNDZfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIllvdW5nZXIgY2hpbGRyZW4sIDQtNnkiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMi1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjMgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDNfYWRfdW5yb3QsIHBsb3RfZWZhXzNfZDNfNzlfdW5yb3QsCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kM180Nl91bnJvdCwgcGxvdF9lZmFfMl9kM180Nl91bnJvdCwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA0LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxKSkKCmZpZ3VyZUEuM19jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjMsIHN0cl93cmFwKCJGaWd1cmUgQS4zOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMyAoYXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkpLCBiZWZvcmUgcm90YXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMuIChCKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIChDKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoRCkgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTZ5LCByZXRhaW5pbmcgdHdvIGZhY3RvcnMuIEEgZmFjdG9yIGxvYWRpbmcgb2YgKzEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1lbnRhbCBjYXBhY2l0eSBhbmQgdW5kZXJseWluZyBjb25zdHJ1Y3Q7IGEgbG9hZGluZyBvZiAtMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgbmVnYXRpdmUgcmVsYXRpb25zaGlwLiIsIDIxMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4zLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDAuNn0KZ2dkcmF3KGZpZ3VyZUEuM19jYXApCmBgYAoKIyMgU3R1ZHkgNAoKYGBge3J9CmVmYV8zX2Q0X2FkX3Vucm90IDwtIGZhX2Z1bihkNF9hZF93aWRlX2ksIDMpCmVmYV8zX2Q0XzQ2X3Vucm90IDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDMpCmVmYV80X2Q0XzQ2X3Vucm90IDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDQpCmBgYAoKYGBge3J9CiMgYWR1bHRzCnBsb3RfZWZhXzNfZDRfYWRfdW5yb3QgPC0gaGVhdG1hcF9mdW4oZWZhXzNfZDRfYWRfdW5yb3QpICsKICBsYWJzKHRpdGxlID0gIkFkdWx0cyIsIHN1YnRpdGxlID0gIlVucm90YXRlZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHlvdW5nZXIgY2hpbGRyZW4KcGxvdF9lZmFfM19kNF80Nl91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfM19kNF80Nl91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiQ2hpbGRyZW4sIDQtNXkiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kNF80Nl91bnJvdCA8LSBoZWF0bWFwX2Z1bihlZmFfNF9kNF80Nl91bnJvdCkgKwogIGxhYnModGl0bGUgPSAiQ2hpbGRyZW4sIDQtNXkiLCBzdWJ0aXRsZSA9ICJVbnJvdGF0ZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjQgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDRfYWRfdW5yb3QsIHBsb3RfZWZhXzNfZDRfNDZfdW5yb3QsIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzRfZDRfNDZfdW5yb3QsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMSwgMS40KSkKCmZpZ3VyZUEuNF9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjQsIHN0cl93cmFwKCJGaWd1cmUgQS40OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgNCAoYXMgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkpLCBiZWZvcmUgcm90YXRpb24uIChBKSBSZXN1bHRzIGZvciBVUyBhZHVsdHMuIChCKSBSZXN1bHRzIGZvciBVUyBjaGlsZHJlbiBhZ2VzIDQtNXksIHJldGFpbmluZyB0aHJlZSBmYWN0b3JzLiAoQykgUmVzdWx0cyBmb3IgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCByZXRhaW5pbmcgZm91ciBmYWN0b3JzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuNCwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAwLjZ9CmdnZHJhdyhmaWd1cmVBLjRfY2FwKQpgYGAKCmBgYHtyfQojIHJlc2V0IEVGQSBwYXJhbWV0ZXJzIHRvIGRlZmF1bHQKc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpgYGAKCgojIE9ibGltaW4tdHJhbnNmb3JtZWQgc29sdXRpb25zCgpUaHJvdWdob3V0IHRoaXMgZGlzc2VydGF0aW9uLCBJIGhhdmUgb3B0ZWQgdG8gZm9jdXMgb24gdmFyaW1heC1yb3RhdGVkIEVGQSBzb2x1dGlvbnMsIGluIHdoaWNoIGZhY3RvcnMgYXJlIGNvbnN0cmFpbmVkIHRvIGJlIG9ydGhvZ29uYWwgKGkuZS4sIGludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgYXJlIDApLiBJbiBteSAoYWRtaXR0ZWRseSBhbmVjZG90YWwpIGV4cGVyaWVuY2UsIHRoaXMgcm90YXRpb24gaGFzIHRlbmRlZCB0byBwcm9kdWNlIHNvbHV0aW9ucyB0aGF0IGFyZSBtb3JlIHJlcGxpY2FibGUgd2hlbiBzdHVkaWVzIGFyZSByZXBlYXRlZCBleGFjdGx5LCBtb3JlIHNpbWlsYXIgYWNyb3NzIHZhcmlhbnRzIG9mIHRoZSBlbXBpcmljYWwgYXBwcm9hY2gsIGFuZCBlYXNpZXIgdG8gbWFrZSBmYWN0b3IgcmV0ZW50aW9uIGRlY2lzaW9ucyBhYm91dC4gT3J0aG9nb25hbCBzb2x1dGlvbnMgYWxzbyBsZW5kIHRoZW1zZWx2ZXMgbW9yZSBuYXR1cmFsbHkgdG8gInNjb3JpbmciIGluZGl2aWR1YWwgcGFydGljaXBhbnRzIG9uIGVhY2ggb2YgdGhlIHVuZGVybHlpbmcgY29uc3RydWN0cyBiZWNhdXNlIGZhY3RvcnMgYXJlLCBieSBkZWZpbml0aW9uLCBtYXhpbWFsbHkgZGlzdGluY3QgZnJvbSBvbmUgYW5vdGhlci4gU2luY2UgY29tcGFyaW5nIEVGQSBzb2x1dGlvbnMgYWNyb3NzIHN0dWRpZXMgYW5kIGFnZSBncm91cHMgKENoYXB0ZXIgSUlJKSBhbmQgdXNpbmcgdGhlc2Ugc29sdXRpb25zIHRvICJzY29yZSIgcGFydGljaXBhbnRzIG9uIHRoZWlyIGFzc2Vzc21lbnRzIG9mIHRoZSBtZW50YWwgbGl2ZXMgb2YgZGlmZmVyZW50IHRhcmdldCBjaGFyYWN0ZXJzIChDaGFwdGVyIFYpIGFyZSB0d28gb2YgdGhlIG1haW4gZ29hbHMgb2YgdGhpcyBkaXNzZXJ0YXRpb24sIHZhcmltYXggcm90YXRpb25zIHNlZW1lZCB0byBtZSB0byBiZSBhcHByb3ByaWF0ZSBmb3IgbXkgY3VycmVudCBwdXJwb3Nlcy4gCgpIb3dldmVyLCAib2JsaXF1ZSIgdHJhbnNmb3JtYXRpb25zLCBzdWNoIGFzIHRoZSAib2JsaW1pbiIgdHJhbnNmb3JtYXRpb24sIGFsc28gY29uZmVyIG1hbnkgYWR2YW50YWdlcyBpbiB1c2luZyBFRkEgdG8gaWRlbnRpZnkgY29uc3RydWN0cyBvZiB0aGVvcmV0aWNhbCBpbnRlcmVzdCAoZm9yIGRpc2N1c3Npb24sIHNlZSBSZXZlbGxlLCAyMDE4LCBDaGFwdGVyIDYpLiBJbiBjb250cmFzdCB0byBvcnRob2dvbmFsIHJvdGF0aW9ucywgb2JsaXF1ZSB0cmFuc2Zvcm1hdGlvbnMgYWxsb3cgZmFjdG9ycyB0byBjb3JyZWxhdGUgd2l0aCBlYWNoIG90aGVyLiBJbiByZW1vdmluZyB0aGUgb3J0aGdvbmFsaXR5IGNvbnN0cmFpbnQsIG9ibGlxdWUgdHJhbnNmb3JtYXRpb25zIHRodXMgcmV2ZWFsIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB2YXJpYWJsZXMgKGluIG15IGNhc2UsIG1lbnRhbCBjYXBhY2l0aWVzKSBhbmQgZmFjdG9ycyAoY29uY2VwdHVhbCB1bml0cykgdGhhdCBtaWdodCBiZSBjb25zaWRlcmVkIG1vcmUgIm5hdHVyYWwiOyB0aGV5IG1pZ2h0IGFsc28gcmV2ZWFsIG5ldyBhc3BlY3RzIG9mIHRoZSByZWxhdGlvbnNoaXBzIGFtb25nIGZhY3RvcnMgdGhlbXNlbHZlcyAocGVydGluZW50IHRvIG15IGdvYWxzIGluIENoYXB0ZXIgVikuCgpJbiB0aGUgaW50ZXJlc3Qgb2YgYWRkaW5nIG51YW5jZSB0byBteSBwcmltYXJ5IGRpc2N1c3Npb25zIG9mIHRoZSBjb25jZXB0dWFsIHVuaXRzIGlkZW50aWZpZWQgYnkgRUZBIChDaGF0cGVyIElJSSkgYW5kIHRoZSByZWxhdGlvbnNoaXBzIGFtb25nIHRoZXNlIHVuaXRzIChDaGFwdGVyIFYpLCBoZXJlIEkgcHJlc2VudCBvYmxpbWluLXRyYW5zZm9ybWVkIEVGQSBzb2x1dGlvbnMgZm9yIGFsbCBzdHVkaWVzLgoKYGBge3J9CiMgcmVzZXQgRUZBIHBhcmFtZXRlcnMgdG8gZGVmYXVsdCwgdGhlbiBzZXQgY2hvc2VuIHJvdGF0aW9uIHRvIG9ibGltaW4Kc291cmNlKCIuL3NjcmlwdHMvZWZhX3BhcmFtLlIiKQpjaG9zZW5fcm90IDwtICJvYmxpbWluIgpgYGAKCmBgYHtyfQojIGNoZWNrIHdoZXRoZXIgcm90YXRpb24gaW1wYWN0cyBmYWN0b3IgcmV0ZW50aW9uIChpdCBkb2Vzbid0KQpyZXRlbl9yZXBvcnRfb2JsaW1pbiA8LSBsaXN0KCJTdHVkeSAxYSIgPSBkMWFfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAxYiIgPSBkMWJfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAxYyIgPSBkMWNfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAxZCIgPSBkMWRfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAyOiBBZHVsdHMiID0gZDJfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAyOiBDaGlsZHJlbiAoNy05eSkiID0gZDJfNzlfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAzOiBBZHVsdHMiID0gZDNfYWRfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAzOiBPbGRlciBjaGlsZHJlbiAoNy05eSkiID0gZDNfNzlfd2lkZV9pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHVkeSAzOiBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSIgPSBkM180Nl93aWRlX2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0dWR5IDQ6IEFkdWx0cyIgPSBkNF9hZF93aWRlX2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0dWR5IDQ6IENoaWxkcmVuICg0LTV5KSIgPSBkNF80Nl93aWRlX2kpICU+JQogIHJldGVuX3JlcG9ydF9mdW4oKQpyZXRlbl9yZXBvcnRfb2JsaW1pbgpgYGAKCgojIyBTdHVkeSAxCgojIyMgRUZBIHNvbHV0aW9ucwoKRGlmZmVyZW50IGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzIHN1Z2dlc3RlZCByZXRhaW5pbmcgYmV0d2VlbiAzLTUgZmFjdG9ycyBmb3IgU3R1ZGllcyAxYS0xZC4gSGVyZSwgSSByZXBvcnQgMy0sIDQtLCBhbmQgNS1mYWN0b3Igc29sdXRpb25zIGZvciBhbGwgb2YgdGhlc2Ugc3R1ZGllcy4gV2hlbiB0aGVzZSBmYWN0b3JzIHNlZW0gc2ltaWxhciB0byB0aGUgQk9EWSwgSEVBUlQsIGFuZCBNSU5EIGZhY3RvcnMgcHJlc2VudGVkIGluIENoYXB0ZXIgSUlJLCBJIGhhdmUgbGFiZWxlZCB0aGVtIGFjY29yZGluZ2x5LgoKYGBge3J9CmVmYV8zX2QxYV9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWFfYWRfd2lkZV9pLCAzKQplZmFfM19kMWJfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFiX2FkX3dpZGVfaSwgMykKZWZhXzNfZDFjX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxY19hZF93aWRlX2ksIDMpCmVmYV8zX2QxZF9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWRfYWRfd2lkZV9pLCAzKQoKZWZhXzRfZDFhX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxYV9hZF93aWRlX2ksIDQpCmVmYV80X2QxYl9hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWJfYWRfd2lkZV9pLCA0KQplZmFfNF9kMWNfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFjX2FkX3dpZGVfaSwgNCkKZWZhXzRfZDFkX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxZF9hZF93aWRlX2ksIDQpCgplZmFfNV9kMWFfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFhX2FkX3dpZGVfaSwgNSkKZWZhXzVfZDFiX2FkX29ibGltaW4gPC0gZmFfZnVuKGQxYl9hZF93aWRlX2ksIDUpCmVmYV81X2QxY19hZF9vYmxpbWluIDwtIGZhX2Z1bihkMWNfYWRfd2lkZV9pLCA1KQplZmFfNV9kMWRfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDFkX2FkX3dpZGVfaSwgNSkKYGBgCgpgYGB7cn0KZmFjdG9yX25hbWVzX2VmYV8zX2QxYV9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIkJPRFkiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfM19kMWJfYWRfb2JsaW1pbiA8LSBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzNfZDFjX2FkX29ibGltaW4gPC0gYygiSEVBUlQiLCAiQk9EWSIsICJNSU5EIikKZmFjdG9yX25hbWVzX2VmYV8zX2QxZF9hZF9vYmxpbWluIDwtIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIpCgpmYWN0b3JfbmFtZXNfZWZhXzRfZDFhX2FkX29ibGltaW4gPC0gYygiSEVBUlQiLCAiQk9EWSIsICJNSU5EIChwZXJjZXB0aW9uKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAoYWdlbmN5KSIpCmZhY3Rvcl9uYW1lc19lZmFfNF9kMWJfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCAoc29jaWFsKSIsICJNSU5EIiwgIkJPRFkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIChiYXNpYykiKQpmYWN0b3JfbmFtZXNfZWZhXzRfZDFjX2FkX29ibGltaW4gPC0gYygiSEVBUlQiLCAiTUlORCAoYWdlbmN5KSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSB2cy4gTUlORCIsICJNSU5EIChwZXJjZXB0aW9uKSIpCmZhY3Rvcl9uYW1lc19lZmFfNF9kMWRfYWRfb2JsaW1pbiA8LSBjKCJIRUFSVCIsICJNSU5EIiwgIkJPRFkiLCAiRmFjdG9yIDQiKQoKZmFjdG9yX25hbWVzX2VmYV81X2QxYV9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIChzb2NpYWwpIiwgIkJPRFkgdnMuIE1JTkQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIChiYXNpYykiLCAiTUlORCAocGVyY2VwdGlvbikiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAoYWdlbmN5KSIpCmZhY3Rvcl9uYW1lc19lZmFfNV9kMWJfYWRfb2JsaW1pbiA8LSBjKCJCT0RZIHZzLiBNSU5EIiwgIkhFQVJUIChzb2NpYWwpIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIChwZXJjZXB0aW9uKSIsICJIRUFSVCAoYmFzaWMpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1JTkQgKGNvZ25pdGlvbikiKQpmYWN0b3JfbmFtZXNfZWZhXzVfZDFjX2FkX29ibGltaW4gPC0gYygiSEVBUlQgKHNvY2lhbCkiLCAiTUlORCAoYWdlbmN5KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIChwZXJjZXB0aW9uKSIsICJNSU5EIHZzLiBCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhY3RvciA1IikKZmFjdG9yX25hbWVzX2VmYV81X2QxZF9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIChiYXNpYykiLCAiSEVBUlQgKHNvY2lhbCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAocGVyY2VwdGlvbikiLCAiTUlORCAoYWdlbmN5KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCT0RZIHZzLiBNSU5EIikKYGBgCgpgYGB7cn0KIyBzdHVkeSAxYQpwbG90X2VmYV8zX2QxYV9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8zX2QxYV9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDFhX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV80X2QxYV9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV80X2QxYV9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFhX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV81X2QxYV9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV81X2QxYV9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFhX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFiCnBsb3RfZWZhXzNfZDFiX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzNfZDFiX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDFiX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzRfZDFiX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kMWJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzVfZDFiX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzVfZDFiX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWMKcGxvdF9lZmFfM19kMWNfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kMWNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxY19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kMWNfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kMWNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxY19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNV9kMWNfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNV9kMWNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV81X2QxY19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxZApwbG90X2VmYV8zX2QxZF9hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8zX2QxZF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDFkX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kMWRfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kMWRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxZF9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxZCIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzVfZDFkX2FkX29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzVfZDFkX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWRfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuNSA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kMWFfYWRfb2JsaW1pbiwgcGxvdF9lZmFfM19kMWJfYWRfb2JsaW1pbiwgCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kMWNfYWRfb2JsaW1pbiwgcGxvdF9lZmFfM19kMWRfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV80X2QxYV9hZF9vYmxpbWluLCBwbG90X2VmYV80X2QxYl9hZF9vYmxpbWluLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV80X2QxY19hZF9vYmxpbWluLCBwbG90X2VmYV80X2QxZF9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzVfZDFhX2FkX29ibGltaW4sIHBsb3RfZWZhXzVfZDFiX2FkX29ibGltaW4sIAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzVfZDFjX2FkX29ibGltaW4sIHBsb3RfZWZhXzVfZDFkX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNCwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMS4yKSkKCmZpZ3VyZUEuNV9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjUsIHN0cl93cmFwKCJGaWd1cmUgQS41OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMSBhZnRlciBvYmxpbWluIHRyYW5zZm9ybWF0aW9uLiBBbGwgcmVzdWx0cyBhcmUgZnJvbSBVUyBhZHVsdCBzYW1wbGVzOyBzZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIFN0dWR5IDFhLiAoQikgU3R1ZHkgMWIuIChDKSBTdHVkeSAxYy4gKEQpIFN0dWR5IDFkLiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMzYwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjUsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSAxNiwgZmlnLmFzcCA9IDEuNH0KZ2dkcmF3KGZpZ3VyZUEuNV9jYXApCmBgYAoKIyMjIEludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMKCkhlcmUgSSBwcmVzZW50IGludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgZm9yIGFsbCBvZiB0aGUgYWJvdmUgRUZBIHNvbHV0aW9ucyBmb3IgU3R1ZGllcyAxYS0xZC4gCgpgYGB7cn0KIyBzdHVkeSAxYQpJRmNvcl9lZmFfM19kMWFfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kMWFfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxYV9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYSIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzRfZDFhX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzRfZDFhX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kMWFfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV81X2QxYV9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV81X2QxYV9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzVfZDFhX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFhIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFiCklGY29yX2VmYV8zX2QxYl9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QxYl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDFiX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFiIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfNF9kMWJfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNF9kMWJfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV80X2QxYl9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzVfZDFiX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzVfZDFiX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWIiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWMKSUZjb3JfZWZhXzNfZDFjX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzNfZDFjX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMWNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWMiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV80X2QxY19hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV80X2QxY19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFjX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFjIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfNV9kMWNfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNV9kMWNfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV81X2QxY19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNS1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKIyBzdHVkeSAxZApJRmNvcl9lZmFfM19kMWRfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfM19kMWRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QxZF9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxZCIsIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV80X2QxZF9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV80X2QxZF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDFkX2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCA0LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzVfZDFkX2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzVfZDFkX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNV9kMWRfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDUtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuNiA8LSBwbG90X2dyaWQoSUZjb3JfZWZhXzNfZDFhX2FkX29ibGltaW4sIElGY29yX2VmYV8zX2QxYl9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfM19kMWNfYWRfb2JsaW1pbiwgSUZjb3JfZWZhXzNfZDFkX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIElGY29yX2VmYV80X2QxYV9hZF9vYmxpbWluLCBJRmNvcl9lZmFfNF9kMWJfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgSUZjb3JfZWZhXzRfZDFjX2FkX29ibGltaW4sIElGY29yX2VmYV80X2QxZF9hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfNV9kMWFfYWRfb2JsaW1pbiwgSUZjb3JfZWZhXzVfZDFiX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIElGY29yX2VmYV81X2QxY19hZF9vYmxpbWluLCBJRmNvcl9lZmFfNV9kMWRfYWRfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gNCwgcmVsX3dpZHRocyA9IGMoMSwgMSwgMSwgMS4yKSkKCmZpZ3VyZUEuNl9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjYsIHN0cl93cmFwKCJGaWd1cmUgQS42OiBJbnRlci1mYWN0b3IgY29ycmVsYXRpb25zIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDEgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gQWxsIHJlc3VsdHMgYXJlIGZyb20gVVMgYWR1bHQgc2FtcGxlczsgc2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBTdHVkeSAxYS4gKEIpIFN0dWR5IDFiLiAoQykgU3R1ZHkgMWMuIChEKSBTdHVkeSAxZC4gRmFjdG9ycyBoYXZlIGJlZW4gbGFiZWxlZCB3aXRoIHRoZSBsYWJlbHMgJ0JPRFksJyAnSEVBUlQsJyBhbmQgJ01JTkQsJyB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4iLCAxOTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuNiwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDgsIGZpZy5hc3AgPSAwLjh9CmdnZHJhdyhmaWd1cmVBLjZfY2FwKQpgYGAKCiMjIFN0dWR5IDIKCiMjIyBFRkEgc29sdXRpb25zCgpEaWZmZXJlbnQgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMgc3VnZ2VzdGVkIHJldGFpbmluZyBlaXRoZXIgMyBvciA0IGZhY3RvcnMgZm9yIGFkdWx0cyBpbiBTdHVkeSAyOyBhbGwgcHJvdG9jb2xzIHN1Z2dlc3RlZCByZXRhaW5pbmcgMyBmYWN0b3JzIGZvciBjaGlsZHJlbiAoYWdlcyA3LTl5KS4gSGVyZSwgSSByZXBvcnQgMy0sIGFuZCA0LWZhY3RvciBzb2x1dGlvbnMgZm9yIGFkdWx0cyBhbmQgdGhlIDMtZmFjdG9yIHNvbHV0aW9uIGZvciBjaGlsZHJlbi4gV2hlbiB0aGVzZSBmYWN0b3JzIHNlZW0gc2ltaWxhciB0byB0aGUgQk9EWSwgSEVBUlQsIGFuZCBNSU5EIGZhY3RvcnMgcHJlc2VudGVkIGluIENoYXB0ZXIgSUlJLCBJIGhhdmUgbGFiZWxlZCB0aGVtIGFjY29yZGluZ2x5LgoKYGBge3J9CmVmYV8zX2QyX2FkX29ibGltaW4gPC0gZmFfZnVuKGQyX2FkX3dpZGVfaSwgMykKZWZhXzRfZDJfYWRfb2JsaW1pbiA8LSBmYV9mdW4oZDJfYWRfd2lkZV9pLCA0KQplZmFfM19kMl83OV9vYmxpbWluIDwtIGZhX2Z1bihkMl83OV93aWRlX2ksIDMpCmBgYAoKYGBge3J9CmZhY3Rvcl9uYW1lc19lZmFfM19kMl9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIkJPRFkiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfNF9kMl9hZF9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIkJPRFkgdnMuIE1JTkQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCAoYWdlbmN5KSIsICJNSU5EIChwZXJjZXB0aW9uKSIpCmZhY3Rvcl9uYW1lc19lZmFfM19kMl83OV9vYmxpbWluIDwtIGMoIkhFQVJUIiwgIkJPRFkgdnMuIE1JTkQiLCAiTUlORCIpCmBgYAoKYGBge3J9CnBsb3RfZWZhXzNfZDJfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kMl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMiwgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDJfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kMl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMiwgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzNfZDJfNzlfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kMl83OV9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDJfNzlfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMiwgQ2hpbGRyZW4gKDctOXkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuNyA8LSBwbG90X2dyaWQocGxvdF9lZmFfM19kMl9hZF9vYmxpbWluLCBwbG90X2VmYV80X2QyX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgcGxvdF9lZmFfM19kMl83OV9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDMsIHJlbF93aWR0aHMgPSBjKDEsIDEuMiwgMS4yKSkKCmZpZ3VyZUEuN19jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjcsIHN0cl93cmFwKCJGaWd1cmUgQS43OiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMiBhZnRlciBvYmxpbWluIHRyYW5zZm9ybWF0aW9uLiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIFVTIGFkdWx0cywgMy1mYWN0b3Igc29sdXRpb24uIChCKSBVUyBhZHVsdHMsIDQtZmFjdG9yIHNvbHV0aW9uLiAoQykgVVMgY2hpbGRyZW4gYWdlcyA3LTl5LiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjEwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjcsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMC42fQpnZ2RyYXcoZmlndXJlQS43X2NhcCkKYGBgCgojIyMgSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucwoKSGVyZSBJIHByZXNlbnQgaW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucyBmb3IgYWxsIG9mIHRoZSBhYm92ZSBFRkEgc29sdXRpb25zIGZvciBTdHVkeSAyLiAKCmBgYHtyfQpJRmNvcl9lZmFfM19kMl9hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QyX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kMl9hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAyLCBBZHVsdHMiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzRfZDJfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNF9kMl9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDJfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMiwgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV8zX2QyXzc5X29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzNfZDJfNzlfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QyXzc5X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDIsIENoaWxkcmVuICg3LTl5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjggPC0gcGxvdF9ncmlkKElGY29yX2VmYV8zX2QyX2FkX29ibGltaW4sIElGY29yX2VmYV80X2QyX2FkX29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIElGY29yX2VmYV8zX2QyXzc5X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDMsIHJlbF93aWR0aHMgPSBjKDEsIDEsIDEuMikpCgpmaWd1cmVBLjhfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS44LCBzdHJfd3JhcCgiRmlndXJlIEEuODogSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAyIGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIFNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgVVMgYWR1bHRzLCAzLWZhY3RvciBzb2x1dGlvbi4gKEIpIFVTIGFkdWx0cywgNC1mYWN0b3Igc29sdXRpb24uIChDKSBVUyBjaGlsZHJlbiBhZ2VzIDctOXkuIEZhY3RvcnMgaGF2ZSBiZWVuIGxhYmVsZWQgd2l0aCB0aGUgbGFiZWxzICdCT0RZLCcgJ0hFQVJULCcgYW5kICdNSU5ELCcgd2hlbiBhcHBsaWNhYmxlLCB0byBmYWNpbGl0YXRlIGNvbXBhcmlzb24gYWNyb3NzIHN0dWRpZXMuIiwgMTQwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjgsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC40fQpnZ2RyYXcoZmlndXJlQS44X2NhcCkKYGBgCgoKIyMgU3R1ZHkgMwoKIyMjIEVGQSBzb2x1dGlvbnMKClZhcmlvdXMgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMgc3VnZ2VzdGVkIHJldGFpbmluZyBlaXRoZXIgMyBvciA0IGZhY3RvcnMgZm9yIGFkdWx0cyBpbiBTdHVkeSAzOyAzIGZhY3RvcnMgZm9yIG9sZGVyIGNoaWxkcmVuIChhZ2VzIDctOXkpOyBhbmQgZWl0aGVyIDEsIDMsIG9yIDQgZmFjdG9ycyBmb3IgeW91bmdlciBjaGlsZHJlbiAoYWdlcyA0LTZ5KS4gSGVyZSwgSSByZXBvcnQgMy0sIGFuZCA0LWZhY3RvciBzb2x1dGlvbnMgZm9yIGFkdWx0cywgdGhlIDMtZmFjdG9yIHNvbHV0aW9uIGZvciBvbGRlciBjaGlsZHJlbiwgYW5kIHRoZSAxLSwgMy0sIGFuZCA0LWZhY3RvciBzb2x1dGlvbnMgZm9yIHlvdW5nZXIgY2hpbGRyZW4uIFdoZW4gdGhlc2UgZmFjdG9ycyBzZWVtIHNpbWlsYXIgdG8gdGhlIEJPRFksIEhFQVJULCBhbmQgTUlORCBmYWN0b3JzIHByZXNlbnRlZCBpbiBDaGFwdGVyIElJSSwgSSBoYXZlIGxhYmVsZWQgdGhlbSBhY2NvcmRpbmdseS4KCmBgYHtyfQplZmFfM19kM19hZF9vYmxpbWluIDwtIGZhX2Z1bihkM19hZF93aWRlX2ksIDMpCmVmYV80X2QzX2FkX29ibGltaW4gPC0gZmFfZnVuKGQzX2FkX3dpZGVfaSwgNCkKZWZhXzNfZDNfNzlfb2JsaW1pbiA8LSBmYV9mdW4oZDNfNzlfd2lkZV9pLCAzKQplZmFfM19kM180Nl9vYmxpbWluIDwtIGZhX2Z1bihkM180Nl93aWRlX2ksIDMpCmVmYV8yX2QzXzQ2X29ibGltaW4gPC0gZmFfZnVuKGQzXzQ2X3dpZGVfaSwgMikKZWZhXzFfZDNfNDZfb2JsaW1pbiA8LSBmYV9mdW4oZDNfNDZfd2lkZV9pLCAxKQpgYGAKCmBgYHtyfQpmYWN0b3JfbmFtZXNfZWZhXzNfZDNfYWRfb2JsaW1pbiA8LSBjKCJCT0RZIiwgIkhFQVJUIiwgIk1JTkQiKQpmYWN0b3JfbmFtZXNfZWZhXzRfZDNfYWRfb2JsaW1pbiA8LSBjKCJCT0RZIiwgIk1JTkQiLCAiSEVBUlQgKHNvY2lhbCkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEVBUlQgKGJhc2ljKSIpCmZhY3Rvcl9uYW1lc19lZmFfM19kM183OV9vYmxpbWluIDwtIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfM19kM180Nl9vYmxpbWluIDwtIGMoIkJPRFktSEVBUlQgKG5lZ2F0aXZlKSIsICJCT0RZLUhFQVJUIChwb3NpdGl2ZSkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfMl9kM180Nl9vYmxpbWluIDwtIGMoIkJPRFktSEVBUlQiLCAiTUlORCIpCmZhY3Rvcl9uYW1lc19lZmFfMV9kM180Nl9vYmxpbWluIDwtIGMoIk5BIikKYGBgCgpgYGB7cn0KcGxvdF9lZmFfM19kM19hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8zX2QzX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kM19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBBZHVsdHMiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfNF9kM19hZF9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV80X2QzX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfNF9kM19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBBZHVsdHMiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfM19kM183OV9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8zX2QzXzc5X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kM183OV9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBPbGRlciBjaGlsZHJlbiAoNy05eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSAjICsKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzNfZDNfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kM180Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDNfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgWW91bmdlciBjaGlsZHJlbiAoNC02eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfMl9kM180Nl9vYmxpbWluIDwtIGhlYXRtYXBfZnVuKAogIGVmYV8yX2QzXzQ2X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfMl9kM180Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAyLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV8xX2QzXzQ2X29ibGltaW4gPC0gaGVhdG1hcF9mdW4oCiAgZWZhXzFfZDNfNDZfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8xX2QzXzQ2X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDMsIFlvdW5nZXIgY2hpbGRyZW4gKDQtNnkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDEtZmFjdG9yIChudWxsKSBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjkgPC0gcGxvdF9ncmlkKHBsb3RfZWZhXzNfZDNfYWRfb2JsaW1pbiwgcGxvdF9lZmFfNF9kM19hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzNfZDNfNzlfb2JsaW1pbiwgcGxvdF9lZmFfM19kM180Nl9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhXzJfZDNfNDZfb2JsaW1pbiwgcGxvdF9lZmFfMV9kM180Nl9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDMsIHJlbF93aWR0aHMgPSBjKDEsIDEsIDEuMikpCgpmaWd1cmVBLjlfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS45LCBzdHJfd3JhcCgiRmlndXJlIEEuOTogRmFjdG9yIGxvYWRpbmdzIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDMgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gU2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBVUyBhZHVsdHMsIDMtZmFjdG9yIHNvbHV0aW9uLiAoQikgVVMgYWR1bHRzLCA0LWZhY3RvciBzb2x1dGlvbi4gKEMpIFVTIGNoaWxkcmVuIGFnZXMgNy05eS4gKEQpIFVTIGNoaWxkcmVuIGFnZXMgNC02eSwgMy1mYWN0b3Igc29sdXRpb24uIChFKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIDItZmFjdG9yIHNvbHV0aW9uLiAoRikgVVMgY2hpbGRyZW4gYWdlcyA0LTZ5LCAxLWZhY3RvciAobnVsbCkgc29sdXRpb24uIEluIHRoaXMgYW5kIGFsbCBmaWd1cmVzIHBvcnRyYXlpbmcgZmFjdG9yIGxvYWRpbmdzLCBmYWN0b3JzIGhhdmUgYmVlbiBwbG90dGVkIGluIHRoZSBzYW1lIG9yZGVyIChCT0RZLCBIRUFSVCwgTUlORCksIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuOSwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDksIGZpZy5hc3AgPSAxfQpnZ2RyYXcoZmlndXJlQS45X2NhcCkKYGBgCgojIyMgSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucwoKSGVyZSBJIHByZXNlbnQgaW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucyBmb3IgYWxsIG9mIHRoZSBhYm92ZSBFRkEgc29sdXRpb25zIGZvciBTdHVkeSAzICh3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIDEtZmFjdG9yIG51bGwgc29sdXRpb24gZm9yIHlvdW5nZXIgY2hpbGRyZW4pLiAKCmBgYHtyfQpJRmNvcl9lZmFfM19kM19hZF9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QzX2FkX29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kM19hZF9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBBZHVsdHMiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzRfZDNfYWRfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNF9kM19hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDNfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMywgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCklGY29yX2VmYV8zX2QzXzc5X29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzNfZDNfNzlfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2QzXzc5X29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDMsIE9sZGVyIGNoaWxkcmVuICg3LTl5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfM19kM180Nl9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2QzXzQ2X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kM180Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfMl9kM180Nl9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8yX2QzXzQ2X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfMl9kM180Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzLCBZb3VuZ2VyIGNoaWxkcmVuICg0LTZ5KSIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAyLWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjEwIDwtIHBsb3RfZ3JpZChJRmNvcl9lZmFfM19kM19hZF9vYmxpbWluLCBJRmNvcl9lZmFfNF9kM19hZF9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfM19kM183OV9vYmxpbWluLCBJRmNvcl9lZmFfM19kM180Nl9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBJRmNvcl9lZmFfMl9kM180Nl9vYmxpbWluLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA1LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxLCAxKSkKCmZpZ3VyZUEuMTBfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4xMCwgc3RyX3dyYXAoIkZpZ3VyZSBBLjEwOiBJbnRlci1mYWN0b3IgY29ycmVsYXRpb25zIGZyb20gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2VzIG9mIFN0dWR5IDMgYWZ0ZXIgb2JsaW1pbiB0cmFuc2Zvcm1hdGlvbi4gU2VlIENoYXB0ZXIgSUkgZm9yIG1ldGhvZHMuIChBKSBVUyBhZHVsdHMsIDMtZmFjdG9yIHNvbHV0aW9uLiAoQikgVVMgYWR1bHRzLCA0LWZhY3RvciBzb2x1dGlvbi4gKEMpIFVTIGNoaWxkcmVuIGFnZXMgNy05eS4gKEQpIFVTIGNoaWxkcmVuIGFnZXMgNC02eSwgMy1mYWN0b3Igc29sdXRpb24uIChFKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNnksIDItZmFjdG9yIHNvbHV0aW9uLiBGYWN0b3JzIGhhdmUgYmVlbiBsYWJlbGVkIHdpdGggdGhlIGxhYmVscyAnQk9EWSwnICdIRUFSVCwnIGFuZCAnTUlORCwnIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiIsIDIzMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4xMCwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDEwLCBmaWcuYXNwID0gMC4yNX0KZ2dkcmF3KGZpZ3VyZUEuMTBfY2FwKQpgYGAKCgojIyBTdHVkeSA0CgojIyMgRUZBIHNvbHV0aW9ucwoKQWxsIGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzIHN1Z2dlc3RlZCByZXRhaW5pbmcgMyBmYWN0b3JzIGZvciBhZHVsdHMgaW4gU3R1ZHkgNDsgZGlmZmVyZW50IHByb3RvY29scyBzdWdnZXN0ZWQgcmV0YWluaW5nIGVpdGhlciBlaXRoZXIgMSwgMywgb3IgNCBmYWN0b3JzIGZvciBjaGlsZHJlbiAoYWdlcyA0LTV5KS4gSGVyZSwgSSByZXBvcnQgdGhlIDMtZmFjdG9yIHNvbHV0aW9uIGZvciBhZHVsdHMsIGFuZCB0aGUgMS0sIDMtLCBhbmQgNC1mYWN0b3Igc29sdXRpb25zIGZvciBjaGlsZHJlbi4gV2hlbiB0aGVzZSBmYWN0b3JzIHNlZW0gc2ltaWxhciB0byB0aGUgQk9EWSwgSEVBUlQsIGFuZCBNSU5EIGZhY3RvcnMgcHJlc2VudGVkIGluIENoYXB0ZXIgSUlJLCBJIGhhdmUgbGFiZWxlZCB0aGVtIGFjY29yZGluZ2x5LgoKYGBge3J9CmVmYV8zX2Q0X2FkX29ibGltaW4gPC0gZmFfZnVuKGQ0X2FkX3dpZGVfaSwgMykKZWZhXzNfZDRfNDZfb2JsaW1pbiA8LSBmYV9mdW4oZDRfNDZfd2lkZV9pLCAzKQplZmFfNF9kNF80Nl9vYmxpbWluIDwtIGZhX2Z1bihkNF80Nl93aWRlX2ksIDQpCmVmYV8xX2Q0XzQ2X29ibGltaW4gPC0gZmFfZnVuKGQ0XzQ2X3dpZGVfaSwgMSkKYGBgCgpgYGB7cn0KZmFjdG9yX25hbWVzX2VmYV8zX2Q0X2FkX29ibGltaW4gPC0gYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIikKZmFjdG9yX25hbWVzX2VmYV8zX2Q0XzQ2X29ibGltaW4gPC0gYygiQk9EWSIsICJNSU5ELUhFQVJUIiwgIkhFQVJUIChuZWdhdGl2ZSkiKQpmYWN0b3JfbmFtZXNfZWZhXzRfZDRfNDZfb2JsaW1pbiA8LSBjKCJNSU5ELUhFQVJUIiwgIkJPRFkiLCAiQk9EWSAobmF1c2VhKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQVJUIChuZWdhdGl2ZSkiKQpmYWN0b3JfbmFtZXNfZWZhXzFfZDRfNDZfb2JsaW1pbiA8LSBjKCJOQSIpCmBgYAoKYGBge3J9CnBsb3RfZWZhXzNfZDRfYWRfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kNF9hZF9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDRfYWRfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNCwgQWR1bHRzIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzNfZDRfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfM19kNF80Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzNfZDRfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNCwgQ2hpbGRyZW4gKDQtNnkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDMtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzRfZDRfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfNF9kNF80Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDRfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNCwgQ2hpbGRyZW4gKDQtNXkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhXzFfZDRfNDZfb2JsaW1pbiA8LSBoZWF0bWFwX2Z1bigKICBlZmFfMV9kNF80Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzFfZDRfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNCwgQ2hpbGRyZW4gKDQtNXkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDEtZmFjdG9yIChudWxsKSBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjExIDwtIHBsb3RfZ3JpZChwbG90X2VmYV8zX2Q0X2FkX29ibGltaW4sIHBsb3RfZWZhXzNfZDRfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV80X2Q0XzQ2X29ibGltaW4sIHBsb3RfZWZhXzFfZDRfNDZfb2JsaW1pbiwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSAiQVVUTyIsIG5jb2wgPSA0LCByZWxfd2lkdGhzID0gYygxLCAxLCAxLCAxKSkKCmZpZ3VyZUEuMTFfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4xMSwgc3RyX3dyYXAoIkZpZ3VyZSBBLjExOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgNCBhZnRlciBvYmxpbWluIHRyYW5zZm9ybWF0aW9uLiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIFVTIGFkdWx0cy4gKEIpIFVTIGNoaWxkcmVuIGFnZXMgNC01eSwgMy1mYWN0b3Igc29sdXRpb24uIChDKSBVUyBjaGlsZHJlbiBhZ2VzIDQtNXksIDQtZmFjdG9yIHNvbHV0aW9uLiAoRCkgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCAxLWZhY3RvciAobnVsbCkgc29sdXRpb24uIEluIHRoaXMgYW5kIGFsbCBmaWd1cmVzIHBvcnRyYXlpbmcgZmFjdG9yIGxvYWRpbmdzLCBmYWN0b3JzIGhhdmUgYmVlbiBwbG90dGVkIGluIHRoZSBzYW1lIG9yZGVyIChCT0RZLCBIRUFSVCwgTUlORCksIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAyMTApLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMTEsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA5LCBmaWcuYXNwID0gMC42fQpnZ2RyYXcoZmlndXJlQS4xMV9jYXApCmBgYAoKIyMjIEludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMKCkhlcmUgSSBwcmVzZW50IGludGVyLWZhY3RvciBjb3JyZWxhdGlvbnMgZm9yIGFsbCBvZiB0aGUgYWJvdmUgRUZBIHNvbHV0aW9ucyBmb3IgU3R1ZHkgNCAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSAxLWZhY3RvciBudWxsIHNvbHV0aW9uIGZvciBjaGlsZHJlbikuIAoKYGBge3J9CklGY29yX2VmYV8zX2Q0X2FkX29ibGltaW4gPC0gSUZjb3JfcGxvdF9mdW4oCiAgZWZhXzNfZDRfYWRfb2JsaW1pbiwgZmFjdG9yX25hbWVzID0gZmFjdG9yX25hbWVzX2VmYV8zX2Q0X2FkX29ibGltaW4pICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQsIEFkdWx0cyIsIAogICAgICAgc3VidGl0bGUgPSAiT2JsaW1pbi10cmFuc2Zvcm1lZCAzLWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpJRmNvcl9lZmFfM19kNF80Nl9vYmxpbWluIDwtIElGY29yX3Bsb3RfZnVuKAogIGVmYV8zX2Q0XzQ2X29ibGltaW4sIGZhY3Rvcl9uYW1lcyA9IGZhY3Rvcl9uYW1lc19lZmFfM19kNF80Nl9vYmxpbWluKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSA0LCBDaGlsZHJlbiAoNC01eSkiLCAKICAgICAgIHN1YnRpdGxlID0gIk9ibGltaW4tdHJhbnNmb3JtZWQgMy1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKSUZjb3JfZWZhXzRfZDRfNDZfb2JsaW1pbiA8LSBJRmNvcl9wbG90X2Z1bigKICBlZmFfNF9kNF80Nl9vYmxpbWluLCBmYWN0b3JfbmFtZXMgPSBmYWN0b3JfbmFtZXNfZWZhXzRfZDRfNDZfb2JsaW1pbikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgNCwgQ2hpbGRyZW4gKDQtNXkpIiwgCiAgICAgICBzdWJ0aXRsZSA9ICJPYmxpbWluLXRyYW5zZm9ybWVkIDQtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKYGBge3J9CmZpZ3VyZUEuMTIgPC0gcGxvdF9ncmlkKElGY29yX2VmYV8zX2Q0X2FkX29ibGltaW4sIElGY29yX2VmYV8zX2Q0XzQ2X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIElGY29yX2VmYV80X2Q0XzQ2X29ibGltaW4sCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9ICJBVVRPIiwgbmNvbCA9IDMsIHJlbF93aWR0aHMgPSBjKDEsIDEsIDEuMikpCgpmaWd1cmVBLjEyX2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMTIsIHN0cl93cmFwKCJGaWd1cmUgQS4xMjogSW50ZXItZmFjdG9yIGNvcnJlbGF0aW9ucyBmcm9tIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSA0IGFmdGVyIG9ibGltaW4gdHJhbnNmb3JtYXRpb24uIFNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgVVMgYWR1bHRzLiAoQikgVVMgY2hpbGRyZW4gYWdlcyA0LTV5LCAzLWZhY3RvciBzb2x1dGlvbi4gKEMpIFVTIGNoaWxkcmVuIGFnZXMgNC01eSwgMy1mYWN0b3Igc29sdXRpb24uIEZhY3RvcnMgaGF2ZSBiZWVuIGxhYmVsZWQgd2l0aCB0aGUgbGFiZWxzICdCT0RZLCcgJ0hFQVJULCcgYW5kICdNSU5ELCcgd2hlbiBhcHBsaWNhYmxlLCB0byBmYWNpbGl0YXRlIGNvbXBhcmlzb24gYWNyb3NzIHN0dWRpZXMuIiwgMTQwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjEyLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuNH0KZ2dkcmF3KGZpZ3VyZUEuMTJfY2FwKQpgYGAKCgojIFZhcmltYXgtcm90YXRlZCBzb2x1dGlvbnMgcHJldmlvdXNseSBkZWVtZWQgcmVkdW5kYW50CgpJbiBDaGFwdGVyIElJSSwgSSBmb2N1c2VkIG15IGludGVycHJldGF0aW9uIG9uIGEgc3Vic2V0IG9mIHRoZSBFRkEgc29sdXRpb25zIHN1Z2dlc3RlZCBieSB0aGUgdGhyZWUgZmFjdG9yIHJldGVudGlvbiBwcm90b2NvbHMsIGV4Y2x1ZGluZyB0aG9zZSBzb2x1dGlvbnMgaW4gd2hpY2ggYWRkaXRpb25hbCBmYWN0b3JzIHdlcmUgcmVkdW5kYW50IHdpdGggdGhlIDMtZmFjdG9yIChCT0RZLUhFQVJULU1JTkQpIHNvbHV0aW9uLiBUaGVzZSBhZGRpdGlvbmFsIGZhY3RvcnMgdGVuZCB0byBleHBsYWluIHZlcnkgbGl0dGxlIG9mIHRoZSBzaGFyZWQgdmFyaWFuY2U7IHRlbmQgbm90IHRvIGJlIHRoZSBkb21pbmFudCBmYWN0b3IgKHRoZSBmYWN0b3Igd2l0aCB0aGUgc3Ryb25nZXN0IGFic29sdXRlIGZhY3RvciBsb2FkaW5nKSBmb3IgbWFueSwgaWYgYW55LCBtZW50YWwgY2FwYWNpdGllczsgYW5kIHRlbmQgdG8gaGF2ZSB2ZXJ5IHdlYWsgZmFjdG9yIGxvYWRpbmdzLiBJIGluY2x1ZGUgdGhlbSBoZXJlIGZvciBjb21wbGV0ZW5lc3MuCgojIyBTdHVkeSAxCgpUaGUgZmFjdG9yIHJldGVudGlvbiBjcml0ZXJpYSBlbXBsb3llZCBpbiBXZWlzbWFuIGV0IGFsLiAoMjAxNykgc3VnZ2VzdGVkIHJldGFpbmluZyAzIGZhY3RvcnMgZm9yIGFsbCBvZiB0aGUgc3R1ZGllcyBpbmNsdWRlZCBpbiBTdHVkeSAxOyBzZWUgQ2hhcHRlciBJSUkuIEluIGNvbnRyYXN0LCBwYXJhbGxlbCBhbmFseXNpcyBzdWdnZXN0ZWQgcmV0YWluaW5nIDQgZmFjdG9ycyAoaW5zdGVhZCBvZiAzKSBmb3IgU3R1ZGllcyAxYiBhbmQgMWQ7IG1pbmltaXppbmcgQklDIHN1Z2dlc3RlZCByZXRhaW5pbmcgNCBmYWN0b3JzIChpbnN0ZWFkIG9mIDMpIGZvciBTdHVkeSAxYywgYW5kIDUgZmFjdG9ycyAoaW5zdGVhZCBvZiAzKSBmb3IgU3R1ZGllcyAxYSwgMWIsIGFuZCAxZC4gU2VlIEZpZ3VyZSBBLjEzLgoKYGBge3J9CiMgc3R1ZHkgMWEKcGxvdF9lZmFfYmljX2QxYV9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfYmljX2QxYV9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFjdG9yIDQiLCAiRmFjdG9yIDUiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWEiLCBzdWJ0aXRsZSA9ICI1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFiCnBsb3RfZWZhX3Bhcl9kMWJfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX3Bhcl9kMWJfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIjQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCnBsb3RfZWZhX2JpY19kMWJfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kMWJfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsICJGYWN0b3IgNCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYiIsIHN1YnRpdGxlID0gIjUtZmFjdG9yIHNvbHV0aW9uIikgIyArCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgojIHN0dWR5IDFjCnBsb3RfZWZhX2JpY19kMWNfYWQgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kMWNfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsICJGYWN0b3IgNCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAxYyIsIHN1YnRpdGxlID0gIjQtZmFjdG9yIHNvbHV0aW9uIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCiMgc3R1ZHkgMWQKcGxvdF9lZmFfcGFyX2QxZF9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfcGFyX2QxZF9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgIkZhY3RvciA0IikpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDFkIiwgc3VidGl0bGUgPSAiNC1mYWN0b3Igc29sdXRpb24iKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKcGxvdF9lZmFfYmljX2QxZF9hZCA8LSBoZWF0bWFwX2Z1bihlZmFfYmljX2QxZF9hZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQk9EWSIsICJIRUFSVCIsICJNSU5EIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFjdG9yIDQiLCAiRmFjdG9yIDUiKSkgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMWQiLCBzdWJ0aXRsZSA9ICI1LWZhY3RvciBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjEzIDwtIHBsb3RfZ3JpZChwbG90X2VmYV9iaWNfZDFhX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV9wYXJfZDFiX2FkLCBwbG90X2VmYV9iaWNfZDFiX2FkLCAKICAgICAgICAgICAgICAgICAgICAgICBwbG90X2VmYV9iaWNfZDFjX2FkLAogICAgICAgICAgICAgICAgICAgICAgIHBsb3RfZWZhX3Bhcl9kMWRfYWQsIHBsb3RfZWZhX2JpY19kMWRfYWQsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMywgcmVsX3dpZHRocyA9IGMoMSwgMSwgMS4yKSkKCmZpZ3VyZUEuMTNfY2FwIDwtIGFkZF9zdWIoZmlndXJlQS4xMywgc3RyX3dyYXAoIkZpZ3VyZSBBLjEzOiBGYWN0b3IgbG9hZGluZ3MgZnJvbSBhZGRpdGlvbmFsIGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyBvZiBTdHVkeSAxLCBub3QgcmVwb3J0ZWQgaW4gQ2hhcHRlciBJSUkuIEFsbCByZXN1bHRzIGFyZSBmcm9tIFVTIGFkdWx0IHNhbXBsZXM7IHNlZSBDaGFwdGVyIElJIGZvciBtZXRob2RzLiAoQSkgU3R1ZHkgMWEsIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gKEIpIFN0dWR5IDFiLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgcGFyYWxsZWwgYW5hbHlzaXMuIChDKSBTdHVkeSAxYiwgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiAoRCkgU3R1ZHkgMWMsIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQy4gKEUpIFN0dWR5IDFkLCBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgcGFyYWxsZWwgYW5hbHlzaXMuIChGKSBTdHVkeSAxZCwgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiBJbiB0aGlzIGFuZCBhbGwgZmlndXJlcyBwb3J0cmF5aW5nIGZhY3RvciBsb2FkaW5ncywgZmFjdG9ycyBoYXZlIGJlZW4gcGxvdHRlZCBpbiB0aGUgc2FtZSBvcmRlciAoQk9EWSwgSEVBUlQsIE1JTkQpLCB3aGVuIGFwcGxpY2FibGUsIHRvIGZhY2lsaXRhdGUgY29tcGFyaXNvbiBhY3Jvc3Mgc3R1ZGllcy4gQSBmYWN0b3IgbG9hZGluZyBvZiArMSBpbmRpY2F0ZXMgYSBwZXJmZWN0bHkgcG9zaXRpdmUgcmVsYXRpb25zaGlwIGJldHdlZW4gbWVudGFsIGNhcGFjaXR5IGFuZCB1bmRlcmx5aW5nIGNvbnN0cnVjdDsgYSBsb2FkaW5nIG9mIC0xIGluZGljYXRlcyBhIHBlcmZlY3RseSBuZWdhdGl2ZSByZWxhdGlvbnNoaXAuIiwgMjAwKSwgeCA9IDAsIGhqdXN0ID0gMCkKYGBgCgpgYGB7ciBmaWd1cmVBLjEzLCBpbmNsdWRlID0gVCwgZmlnLndpZHRoID0gOSwgZmlnLmFzcCA9IDF9CmdnZHJhdyhmaWd1cmVBLjEzX2NhcCkKYGBgCgojIyBTdHVkeSAyCgpBbGwgb2YgdGhlIEVGQSBzb2x1dGlvbnMgc3VnZ2VzdGVkIGJ5IHRoZSB0aHJlZSBmYWN0b3IgcmV0ZW50aW9uIHByb3RvY29scyBhcmUgcmVwb3J0ZWQgaW4gZnVsbCBpbiBDaGFwdGVyIElJSS4KCiMjIFN0dWR5IDMKClRoZSBmYWN0b3IgcmV0ZW50aW9uIGNyaXRlcmlhIGVtcGxveWVkIGluIFdlaXNtYW4gZXQgYWwuICgyMDE3KSBzdWdnZXN0ZWQgcmV0YWluaW5nIDMgZmFjdG9ycyBmb3IgYWxsIG9mIHRoZSBhZ2UgZ3JvdXBzIGluY2x1ZGVkIGluIFN0dWR5IDM7IHNlZSBDaGFwdGVyIElJSS4gSW4gY29udHJhc3QsIHBhcmFsbGVsIGFuYWx5c2lzIHN1Z2dlc3RlZCByZXRhaW5pbmcgMiBmYWN0b3JzIChpbnN0ZWFkIG9mIDMpIGZvciB5b3VuZ2VyIGNoaWxkcmVuOyBhbmQgbWluaW1pemluZyBCSUMgc3VnZ2VzdGVkIHJldGFpbmluZyA0IGZhY3RvcnMgKGluc3RlYWQgb2YgMykgZm9yIGFkdWx0cywgYW5kIDEgZmFjdG9yIChpLmUuLCBhICJudWxsIiBzb2x1dGlvbikgZm9yIHlvdW5nZXIgY2hpbGRyZW4gKGFnZXMgNC02eSkuIFNlZSBGaWd1cmUgQS4xNC4KCmBgYHtyfQojIHN0dWR5IDMKcGxvdF9lZmFfYmljX2QzX2FkIDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDNfYWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIsICJGYWN0b3IgNCIpKSArCiAgbGFicyh0aXRsZSA9ICJTdHVkeSAzOiBBZHVsdHMiLCBzdWJ0aXRsZSA9ICI1LWZhY3RvciBzb2x1dGlvbiIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpwbG90X2VmYV9iaWNfZDNfNDYgPC0gaGVhdG1hcF9mdW4oZWZhX2JpY19kM180NikgKwogIGxhYnModGl0bGUgPSAiU3R1ZHkgMzogWW91bmdlciBjaGlsZHJlbiwgNC02eSIsIAogICAgICAgc3VidGl0bGUgPSAiMS1mYWN0b3IgKG51bGwpIHNvbHV0aW9uIikgIysKICAjIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKYGBgCgpgYGB7cn0KZmlndXJlQS4xNCA8LSBwbG90X2dyaWQocGxvdF9lZmFfYmljX2QzX2FkLCBwbG90X2VmYV9iaWNfZDNfNDYsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gIkFVVE8iLCBuY29sID0gMiwgcmVsX3dpZHRocyA9IGMoMSwgMSkpCgpmaWd1cmVBLjE0X2NhcCA8LSBhZGRfc3ViKGZpZ3VyZUEuMTQsIHN0cl93cmFwKCJGaWd1cmUgQS4xNDogRmFjdG9yIGxvYWRpbmdzIGZyb20gYWRkaXRpb25hbCBleHBsb3JhdG9yeSBmYWN0b3IgYW5hbHlzZXMgb2YgU3R1ZHkgMywgbm90IHJlcG9ydGVkIGluIENoYXB0ZXIgSUlJLiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcy4gKEEpIEFkdWx0cywgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDLiAoQikgWW91bmdlciBjaGlsZHJlbiAoNC02eSksICdudWxsJyBzb2x1dGlvbiBzdWdnZXN0ZWQgYnkgbWluaW1pemluZyBCSUMuIEluIHRoaXMgYW5kIGFsbCBmaWd1cmVzIHBvcnRyYXlpbmcgZmFjdG9yIGxvYWRpbmdzLCBmYWN0b3JzIGhhdmUgYmVlbiBwbG90dGVkIGluIHRoZSBzYW1lIG9yZGVyIChCT0RZLCBIRUFSVCwgTUlORCksIHdoZW4gYXBwbGljYWJsZSwgdG8gZmFjaWxpdGF0ZSBjb21wYXJpc29uIGFjcm9zcyBzdHVkaWVzLiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAxMTUpLCB4ID0gMCwgaGp1c3QgPSAwKQpgYGAKCmBgYHtyIGZpZ3VyZUEuMTQsIGluY2x1ZGUgPSBULCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMX0KZ2dkcmF3KGZpZ3VyZUEuMTRfY2FwKQpgYGAKCiMjIFN0dWR5IDQKCkFsbCBvZiB0aGUgRUZBIHNvbHV0aW9ucyBzdWdnZXN0ZWQgYnkgdGhlIHRocmVlIGZhY3RvciByZXRlbnRpb24gcHJvdG9jb2xzIGFyZSByZXBvcnRlZCBpbiBmdWxsIGluIENoYXB0ZXIgSUlJLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIDEtZmFjdG9yICgibnVsbCIpIHNvbHV0aW9uIHN1Z2dlc3RlZCBieSBtaW5pbWl6aW5nIEJJQyBmb3IgeW91bmdlciBjaGlsZHJlbiAoNC01eSkuIFNlZSBGaWd1cmUgQS4xNS4KCmBgYHtyfQojIHN0dWR5IDQKcGxvdF9lZmFfYmljX2Q0XzQ2IDwtIGhlYXRtYXBfZnVuKGVmYV9iaWNfZDRfNDYpICsKICBsYWJzKHRpdGxlID0gIlN0dWR5IDQ6IFlvdW5nZXIgY2hpbGRyZW4sIDQtNXkiLCAKICAgICAgIHN1YnRpdGxlID0gIjEtZmFjdG9yIChudWxsKSBzb2x1dGlvbiIpICMgKwogICMgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpmaWd1cmVBLjE1IDwtIHBsb3RfZWZhX2JpY19kNF80NgoKZmlndXJlQS4xNV9jYXAgPC0gYWRkX3N1YihmaWd1cmVBLjE1LCBzdHJfd3JhcCgiRmlndXJlIEEuMTU6IEZhY3RvciBsb2FkaW5ncyBmcm9tIHRoZSAnbnVsbCcgc29sdXRpb24gc3VnZ2VzdGVkIGJ5IG1pbmltaXppbmcgQklDIGZvciB5b3VuZ2VyIGNoaWxkcmVuICg0LTV5KSBpbiBTdHVkeSA0LiBTZWUgQ2hhcHRlciBJSSBmb3IgbWV0aG9kcywgYW5kIENoYXB0ZXIgSUlJIGZvciBvdGhlciBFRkEgc29sdXRpb25zIGZvciB0aGlzIHN0dWR5LiBBIGZhY3RvciBsb2FkaW5nIG9mICsxIGluZGljYXRlcyBhIHBlcmZlY3RseSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtZW50YWwgY2FwYWNpdHkgYW5kIHVuZGVybHlpbmcgY29uc3RydWN0OyBhIGxvYWRpbmcgb2YgLTEgaW5kaWNhdGVzIGEgcGVyZmVjdGx5IG5lZ2F0aXZlIHJlbGF0aW9uc2hpcC4iLCAzMCksIHggPSAwLCBoanVzdCA9IDApCmBgYAoKYGBge3IgZmlndXJlQS4xNSwgaW5jbHVkZSA9IFQsIGZpZy53aWR0aCA9IDIsIGZpZy5hc3AgPSAxLjh9CmdnZHJhdyhmaWd1cmVBLjE1X2NhcCkKYGBgCgoKIyBUTyBETyBMSVNUCgotIHJlY29uc2lkZXIgYWRkaXRpb25zIHRvIGFwcGVuZGl4IEE6IAogICAgLSBsZWZ0LXJpZ2h0IHBvc2l0aW9uIChzdHVkeSAxYykKICAgIC0gZmlyc3Qtc2Vjb25kIChzdHVkeSA0KQogICAgLSBiZWV0bGUtcm9ib3QgKHN0dWRpZXMgMWEtMWMsIHN0dWR5IDIsIHN0dWR5IDQpCiAgICAtIGFuYWx5c2lzIG9mIHNjYWxlIHVzZSBhY3Jvc3MgYWdlIGdyb3VwcwoK